<form class="layui-form seller-form" action="">
    <div class="layui-form-item">

        <div class="layui-inline">
            <label class="layui-form-label seller-inline-2">设备类型：</label>
            <div class="layui-input-inline">
                <select id="cat_id" lay-filter="cat_id" name="cat_id">
                    <option value=''>请选择</option>
                    {volist name="catList" id="vo"}
                    <option value="{$vo.id}">{$vo.name}</option>
                    {/volist}
                </select>
            </div>
        </div>

        <div class="layui-inline">
            <label class="layui-form-label seller-inline-2">设备品牌：</label>
            <div class="layui-input-inline">
                <select id="brand_id" lay-filter="brand_id" name="brand_id">
                    <option value=''>请选择</option>
                    {volist name="brandList" id="vo"}
                    <option value="{$vo.id}">{$vo.name}</option>
                    {/volist}
                </select>
            </div>
        </div>

        <div class="layui-inline">
            <label class="layui-form-label seller-inline-2">设备场景：</label>
            <div class="layui-input-inline">
                <select id="type_id" lay-filter="type_id" name="type_id">
                    <option value=''>请选择</option>
                    {volist name="typeList" id="vo"}
                    <option value="{$vo.id}">{$vo.name}</option>
                    {/volist}
                </select>
            </div>
        </div>

        <div class="layui-inline">
            <label class="layui-form-label seller-inline-2">设备编号：</label>
            <div class="layui-input-inline">
                <input type="text" name="sub_id" lay-verify="title" placeholder="请输入设备编号" autocomplete="off"
                    class="layui-input">
            </div>
        </div>

        <div class="layui-inline">
            <button class="layui-btn layui-btn-sm" lay-submit lay-filter="search"><i
                    class="iconfont icon-chaxun"></i>筛选</button>

            <button type="button" class="layui-btn layui-btn-sm add"><i class="layui-icon">&#xe608;</i> 添加</button>
            <button type="button" class="layui-btn layui-btn-sm import"><i class="layui-icon">&#xe608;</i> 导入</button>
        </div>

    </div>
</form>

<div class="table-body">
    <table id="device" lay-filter="device"></table>
</div>

<script>
    layui.use(['table', 'form', 'layer', 'laydate'], function () {
        var layer = layui.layer, table = layui.table, form = layui.form, date = layui.laydate;

        // 定义变量保存当前页面和当前页面数据条数
        var currPage; 
        var dataNum;

        //执行渲染
        table.render({
            elem: '#device', //指定原始表格元素选择器（推荐id选择器）
            height: 'full-115',
            cellMinWidth: '80',
            page: 'true',
            limit: '20',
            id: 'device',
            url: "{:url('device/index')}",
            toolbar: '#toolbarDevice', //开启头部工具栏，并为其绑定左侧模板
            cols: [[ //标题栏
                { type: 'checkbox', fixed: 'left' }, 
                { field: 'id', title: '设备ID', align: 'center', width: 200, hide: true },
                { field: 'name', title: '设备名称', align: 'center', width: 200 },
                { field: 'cat_name', title: '类型名称', align: 'center', width: 100 },
                { field: 'brand_name', title: '品牌名称', align: 'center', width: 100 },
                { field: 'type_name', title: '使用场景', align: 'center', width: 100 },
                { field: 'sub_id', title: '出厂编号', align: 'center', width: 100 },
                { field: 'area', title: '设备位置', align: 'center', width: 200 },
                { field: 'status', title: '状态', sort: true, align: 'center', width: 150, templet: '#status', unresize: true },
                // {field: 'ctime',sort: true, title: '创建时间' ,align:'center', width: 160},
                // {field: 'utime',sort: true, title: '更新时间' ,align:'center', width: 160},
                { title: '操作', align: 'center', toolbar: '#feeTemplateBar', width: 200 }
            ]], //设置表头
            done: function(res, curr, count){
                // 给变量赋值 
                dataNum = res.data.length;
                currPage = curr;
            }
        });

        form.on('submit(search)', function (data) {
            layui.table.reload('device', {
                where: data.field
                , page: {
                    curr: 1 //重新从第 1 页开始
                }
            }); 
            return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
        });
  
        //ajax提交商品的添加
        form.on('submit(batchFeeTemplateSave)', function(data){
            JsPost("{:url('device/batchFeeTemplateSave')}", data.field, function(res){
                if(res.status){
                    layer.close(window.box);
                    layer.msg(res.msg, {time:1300},function(){
                        table.reload('device');
                    });
                }else{
                    layer.msg(res.msg);
                }
            })
        });
         
        //头工具栏事件
        table.on('toolbar(device)', function (obj) {
            var checkStatus = table.checkStatus(obj.config.id);
            switch (obj.event) {
                case 'batchEnable': 
                    var data = checkStatus.data;
                    if(data.length > 0) {  
                        var deviceIds = '';
                        // 取选中的时间
                        for(i = 0; i < data.length; i++) {
                            deviceIds += data[i].id + ',';
                        }
                        deviceIds = deviceIds.substring(0, deviceIds.length - 1);

                        layer.confirm('选中了'+ data.length + '条记录，您确定要批量启用设备吗？', {
                            title: '提示', btn: ['确认', '取消'] //按钮
                        }, function(){ 
                            JsPost("{:url('device/batchEnable')}", { data: deviceIds }, function (res) { 
                                if(res.status){
                                    layui.table.reload('device', {
                                        where: data.field
                                        , page: {
                                            curr: 1 //重新从第 1 页开始
                                        }
                                    });
                                }
                                layer.msg(res.msg);
                            });
                        }); 
                    } else {
                        layer.alert('请先选中设备！');
                    }
                    break;
                case 'batchDisable':
                    var data = checkStatus.data;
                    if(data.length > 0) {  
                        var deviceIds = '';
                        // 取选中的时间
                        for(i = 0; i < data.length; i++) {
                            deviceIds += data[i].id + ',';
                        }
                        deviceIds = deviceIds.substring(0, deviceIds.length - 1);

                        layer.confirm('选中了'+ data.length + '条记录，您确定要批量停用设备吗？', {
                            title: '提示', btn: ['确认', '取消'] //按钮
                        }, function(){ 
                            JsPost("{:url('device/batchDisable')}", { data: deviceIds }, function (res) {
                                if(res.status){
                                    layui.table.reload('device', {
                                        where: data.field
                                        , page: {
                                            curr: 1 //重新从第 1 页开始
                                        }
                                    });
                                }                    
                                layer.msg(res.msg);
                            });
                        }); 
                    } else {
                        layer.alert('请先选中设备！');
                    }
                    break; 
                case 'batchFeeTemplate':
                    // var cat_id = $("#cat_id").val();
                    // var brand_id = $("#brand_id").val();
                    // var type_id = $("#type_id").val();

                    // if(cat_id == '') {
                    //     layer.msg('新增设备，必须先选定设备类型、设备品牌、设备场景！');
                    //     return false;
                    // }
                    
                    // if(brand_id == '') {
                    //     layer.msg('新增设备，必须先选定设备类型、设备品牌、设备场景！');
                    //     return false;
                    // }
                    
                    // if(type_id == '') {
                    //     layer.msg('新增设备，必须先选定设备类型、设备品牌、设备场景！');
                    //     return false;
                    // }
 
                    cat_id = 1;
                    brand_id = 1;
                    type_id = 1;

                    //if(cat_id == 1 && brand_id == 1 && type_id == 1) {
                    var data = checkStatus.data;
                    if(data.length > 0) { 

                        var deviceIds = '';
                        // 取选中的时间
                        for(i = 0; i < data.length; i++) {
                            // 数据验证
                            if(cat_id != data[i].cat_id || brand_id != data[i].brand_id || type_id != data[i].type_id) {
                                layer.msg('设备类型、设备品牌、设备场景不匹配！');
                                return false;
                            }

                            deviceIds += data[i].id + ',';
                        }
                        deviceIds = deviceIds.substring(0, deviceIds.length - 1);

                        layer.confirm('选中了'+ data.length + '条记录，您确定要批量设置计费规则吗？', {
                            title: '提示', btn: ['确认', '取消'] //按钮
                        }, function(index){
                            layer.close(index)

                            JsGet("{:url('device/batchFeeTemplate')}?deviceIds=" + deviceIds, function(e){
                                if ((e.hasOwnProperty('status') && !e.status) || (e.hasOwnProperty('code') && e.code == 0)) {
                                    layer.msg(e.msg); return false;
                                }

                                window.box = layer.open({
                                    type: 1,
                                    content: e,
                                    area: ['628px', 'auto'],
                                    title:'批量设置计费规则'
                                });
                            });
                        }); 
                    } else {
                        layer.alert('请先选中设备！');
                    } 
                    // } else {
                    //     layer.msg('目前不支持此设备类型、设备品牌、设备场景！');
                    // }

                    break;
                //自定义头工具栏右侧图标 - 提示
                case 'LAYTABLE_TIPS':
                    layer.alert('这是工具栏右侧自定义的一个图标按钮');
                    break;
            };
        });

        //添加
        $(document).on('click', '.add', function () {
            var cat_id = $("#cat_id").val();
            var brand_id = $("#brand_id").val();
            var type_id = $("#type_id").val();

            if(cat_id == '') {
                layer.msg('新增设备，必须先选定设备类型、设备品牌、设备场景！');
                return false;
            }
            
            if(brand_id == '') {
                layer.msg('新增设备，必须先选定设备类型、设备品牌、设备场景！');
                return false;
            }
            
            if(type_id == '') {
                layer.msg('新增设备，必须先选定设备类型、设备品牌、设备场景！');
                return false;
            }

            var topLayui = parent === self ? parent.window.layui : top.parent.window.layui;
            
            if(cat_id == 1 && brand_id == 1 && type_id == 1) {
                var url = "{:url('device/add')}" + '?cat_id=' + cat_id + '&brand_id=' + brand_id + '&type_id=' + type_id;
                topLayui.index.openTabsPage(url, '添加设备');
            } else {
                layer.msg('目前不支持此设备类型、设备品牌、设备场景！');
            }

            return false;
        });

        //导入
        $(document).on('click', '.import', function () {
            var topLayui = parent === self ? parent.window.layui : top.parent.window.layui;
            topLayui.index.openTabsPage('{:url("Device/importDevice")}', '导入设备'); 
            return false;
        });
        
        //监听 操作状态
        form.on('switch(status)', function (obj) {
            JsPost("{:url('device/changeStatus')}", { id: this.value, status: obj.elem.checked }, function (res) {
                layer.msg(res.msg);
            });
        });

        //监听工具条
        table.on('tool(device)', function (obj) { //注：tool是工具条事件名，test是table原始容器的属性 lay-filter="对应的值"
            var data = obj.data; //获得当前行数据
            var layEvent = obj.event; //获得 lay-event 对应的值（也可以是表头的 event 参数对应的值）
            if (layEvent === 'del') { //删除
                layer.confirm('真的要删除么', { icon: 3 }, function (index) {
                    JsGet("{:url('device/del')}?id=" + data.id, function (res) {
                        //删除逻辑中判断只有一条数据时应该刷新前一页信息
                        layer.msg(res.msg);
                        if(res.status){
                            if(dataNum == 1){
                                currPage = currPage - 1;
                            }

                            table.reload('device', {
                                page: {
                                    curr: currPage
                                }
                            });
                            return false;
                        }
                    })
                });
            } else if (layEvent === 'edit') { //编辑 
                var editUrl = "{:url('device/edit')}?id=" + data.id;
                var topLayui = parent === self ? parent.window.layui : top.parent.window.layui;
                topLayui.index.openTabsPage(editUrl, '编辑设备');
                return false;
            } else if (layEvent == 'generate') {
                window.box = layer.open({
                    type: 2,
                    content: "{:url('Device/generate')}?id=" + data.id,
                    area: ['380px', '420px'],
                    title: '二维码',
                    btn: ['下载', '关闭'],
                    btnAlign: 'c',
                    yes: function (index, layero) {
                        var iframeWin = window[layero.find('iframe')[0]['name']];
                        iframeWin.downloadQrcode();
                    },
                    cancel: function () {
                        layer.closeAll();
                    }
                });
            }
        });

    })
</script>

<script type="text/html" id="status">
    <input type="checkbox" name="status" value="{{d.id}}" lay-skin="switch" lay-text="启用|停用" lay-filter="status" {{ d.status == 1 ? 'checked' : '' }}>
</script>

<script type="text/html" id="feeTemplateBar">
    <a class="layui-btn layui-btn-xs" lay-event="generate">二维码</a>
    <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>

<script type="text/html" id="toolbarDevice">
    <div class="layui-btn-container">
      <button class="layui-btn layui-btn-sm" lay-event="batchEnable">批量启用</button>
      <button class="layui-btn layui-btn-sm" lay-event="batchDisable">批量停用</button>
      <button class="layui-btn layui-btn-sm" lay-event="batchFeeTemplate">批量设置价格</button>
    </div>
  </script>